var express = require('express');
var path = require('path');
var app = express();
var http = require('http');
var port = normalizePort(process.env.PORT || '17258');
const router = express.Router();
app.set('port', port);

var server = http.createServer(app);

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }
  var bind = typeof port === 'string' ?
    'Pipe ' + port :
    'Port ' + port;
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string' ?
    'pipe ' + addr :
    'port ' + addr.port;
}



// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(express.static(__dirname));

app.use('/read-article.html', function (req, res, next) {
  // console.log('read-article req', req.params);
  res.sendFile(path.resolve(__dirname, "build/read-article.html"), {
    cacheControl: false,
    maxAge: 0
  });
});

app.use('/*', router);
router.get('/', function (req, res, next) {
  // console.log('/ req', req.params);
  res.sendFile(path.resolve(__dirname, "index.html"), {
    cacheControl: false,
    maxAge: 0
  });
});

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  // var err = new Error('Not Found');
  // err.status = 404;
  res.redirect("/index.html");
  // next(err);
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  console.log('error', err);
});

module.exports = app;
